//
//  ZZHomeViewModel.swift
//  web
//
//  Created by 张卓 on 2017/2/4.
//  Copyright © 2017年 ZZ. All rights reserved.
//

import UIKit
import SDWebImage

class ZZHomeViewModel: NSObject {
    //建立一个空数组,用于接收数据
    lazy var dataArr:[ZZStatusViewModel] = [ZZStatusViewModel]()
    
    
}

extension ZZHomeViewModel{
    
    
    
    func getHomeData(isPullUp:Bool, isFinish:@escaping (Bool,Int)->()){
        var sinceId : Int64 = 0
        var maxId : Int64 = 0
        
        if isPullUp {
            //下拉加载更多
            maxId = dataArr.last?.homeModel?.id ?? 0
            if maxId > 0{
                maxId = maxId - 1
            }
        }else{
            //下拉刷新
            sinceId = dataArr.first?.homeModel?.id ?? 0
        }
        
        HMNetworkTools.shared.loadData(since_id:sinceId, max_id:maxId, success: { (respones) in
//            print("成功",respones)
            //判断response是否为nil.   是否可以转成字典
            guard let resDic = respones as? [String:Any] else{
                isFinish(false,0)
                return
            }
            //判断resDic[statuses]是否为nil 数组
            guard let res = resDic["statuses"] else{
                isFinish(false,0)
                return
            }
            //字典转模型
            let statusArr = NSArray.yy_modelArray(with: ZZHomeModel.self, json: res) as! [ZZHomeModel]
            
            // 创建一个临时可以可变的数组-> [HMStatusViewModel]
            var tempArr:[ZZStatusViewModel] = [ZZStatusViewModel]()
            
            //创建调度组
            let group = DispatchGroup()
            
            // 遍历statusArray 创建statuViewModel 然后对齐身上的homeModel进行赋值 然后 保存到临时数组中
            for homeModel in statusArr{
                
                //判断原创微博的pic_urls.count是否等于1 如果等于1 下载图片
                if homeModel.pic_urls?.count == 1 {
                    // 进去
                    group.enter()
                    //使用SDWebImage下载
                    
                    SDWebImageManager.shared().downloadImage(with: URL(string: homeModel.pic_urls?.first?.thumbnail_pic ?? ""), options: [], progress: nil, completed: { (image, error, _, _, _) in
                        //原创微博单张图片下载
//                        print("原创微博单张图片下载")
                        //出去
                        group.leave()
                    })
                }
                //判断转发微博的pic_urls.count是否等于1 如果等于1 下载图片
                if homeModel.retweeted_status?.pic_urls?.count == 1{
                    //进去
                    group.enter()
                    //使用SDWebImage 下载
                    SDWebImageManager.shared().downloadImage(with: URL(string: homeModel.retweeted_status?.pic_urls?.first?.thumbnail_pic ?? ""), options: [], progress: nil, completed: { (image, error, _, _, _) in
                        //原创微博单张图片下载
//                        print("转发微博单张图片下载")
                        //出去
                        group.leave()
                    })
                }
                let statusViewModel = ZZStatusViewModel()
                // 对属性赋值
                statusViewModel.homeModel = homeModel
                // 添加到临时数组中
                tempArr.append(statusViewModel)
            }
            // 赋值
//            self.dataArr = tempArr
            if isPullUp {
                //下拉加载更多
                self.dataArr = self.dataArr + tempArr
            }else{
                //上拉刷新
                self.dataArr = tempArr + self.dataArr
            }
            
//            isFinish(true)
            //监听SDWebImage下载是否完成
            group.notify(queue: DispatchQueue.main, execute: {
//                print("所有图片下载完成")
                isFinish(true,tempArr.count)
            })
        }, failure: { (error) in
            print("失败",error)
            isFinish(false,0)
        })
        
    }
    
    
    
}
